#define  _CRT_SECURE_NO_WARNINGS 1
//#include "head.h"

/*
什么是文件?
磁盘(硬盘)上的文件是文件。
但是在程序设计中，我们一般谈的文件有两种: 程序文件、数据文件(从文件功能的角度来分类的)。

程序文件
程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。

数据文件文件的内容不一定是程序，而是程序运行时读写的数据，比如程序运行需要从中读取数据的文件，或者输出内容的文件。

本章讨论的是数据文件。
在以前各章所处理数据的输入输出都是以终端为对象的，即从终端的键盘输入数据，运行结果显示到显示器上。其实有时候我们会把信息输出到磁盘上，当需要的时候再从磁盘上把数据读取到内存中使用，这里处理的就是磁盘上文件。


文件名
一个文件要有一个唯一的文件标识，以便用户识别和引用。
文件名包含3部分:文件路径+文件名主干+文件后缀例如:c:\code\test.txt
为了方便起见，文件标识常被称为文件名。
*/

/*
根据数据的组织形式，数据文件被分为文本文件和二进制文件。
数据在内存中以二进制的形式存储，如果不加转换的输出到外存的文件中，就是二进制文件
如果要求在外存上以ASCI码的形式存储，则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。

一个数据在文件中是怎么存储的呢?
字符一律以ASCII形式存储，数值型数据既可以用ASCII形式存储，也可以使用二进制形式存储。
如有整数10000，如果以ASCII码的形式输出到磁盘，则磁盘中占用5个字节(每个字符一个字节)，而二进制形式输出，则在磁盘上只占4个字节。
*/


//int main()
//{
//	int a = 10000;
//	FILE* pf = fopen("text.txt", "wb");
//
//    if (pf == NULL)
//    {
//        perror("open file failed\n");
//        return -1;
//    }
//
//    fwrite(&a, sizeof(int), 1, pf);
//    fclose(pf);
//
//    pf = fopen("text.txt", "rb");
//    fread(&a, sizeof(int), 1, pf);
//    printf("%d\n", a);
//    fclose(pf);
//
//	return 0;
//}


////打开文件
//FILE* fopen(const char* filename, const char* mode);
////                  文件名           打开模式
//
////关闭文件
//int fclose(FILE* stream);


//int main()
//{
//    //打开文件
//    FILE* pf = fopen("text.txt", "r"); //当前路径下的文件
//    
//    //绝对路径：
//    //FILE* pf = fopen("D:\\CodeFiles\\Gitee\\clanguage\\VisualStudio\\BasicConcept\\File\\text.txt", "r"); // 绝对路径
//    //打开文件成功，返回文件信息区的地址；失败，返回NULL
//    
//    //相对路径：
//    // . --> 当前目录
//    // .. --> 上一级目录
//    //FILE* pf = fopen(".\\..\\File\\text.txt", "w");
//    
//    if (pf == NULL)
//    {
//        perror("open file failed\n");
//        return -1;
//    }
//    else
//    {
//        printf("open file success\n");
//    }
//
//
//    //关闭文件
//    fclose(pf);
//    pf = NULL;
//
//    return 0;
//}
